██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Simple Mail Transfer Protocol
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwawSimple Mail Transfer Protocol (mwbaSMTP) è un mwbqprotocollo standard per la trasmissione di mwbgemail. Inizialmente proposto nella mwbwRFC 788cite-ref-rfc788-1-0[1] nel 1981, poi aggiornato con mwdaRFC 821cite-ref-rfc821-2-0[2] nel 1982 ed ulteriormente modificato nel 2008 con l'introduzione di mweqextended SMTPcite-ref-rfc1869-3-0[3]cite-ref-rfc5321-4-0[4], che è il protocollo attualmente in uso.
Anche se i mwgwserver di posta elettronica utilizzano SMTP per inviare e ricevere mail, i client mail a livello utente utilizzano SMTP solo per inviare il messaggio al server mail, il quale si occupa dell'invio del messaggio stesso. Per recuperare i messaggi, le applicazioni client usano solitamente protocolli come mwhaIMAP o mwhqPOP3.
La comunicazione tra i server mail utilizza il protocollo mwhwTCP sulla porta 25cite-ref-rfc821-2-1[2]. I mwjaclient mail, tuttavia, spesso inviano le mail in uscita al server sulla porta 465cite-ref-5[5] o 587cite-ref-6[6].
Anche se sistemi proprietari (come mwmgMicrosoft Exchange e IBM Notes) e sistemi mwnawebmail (come mwnqOutlook.com, mwngGmail e mwnwYahoo! Mail) utilizzano protocolli non standard per accedere alla mail box dell'account del rispettivo server mail, tutti utilizzano SMTP, per l'invio e la ricezione di mail, al di fuori dei loro sistemi.
Contents
• Storia
• Note
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Descrizione
È un protocollo mwowtestuale relativamente semplice, nel quale vengono specificati uno o più destinatari di un messaggio e, dopo aver verificato la loro esistenza, il messaggio viene trasferito. È abbastanza facile verificare come funziona un server SMTP mediante un mwpaclient mwpqtelnetcite-ref-7[7]. Il protocollo SMTP utilizza come protocollo di mwqglivello di trasporto mwqwTCP. Il client apre una mwrasessione TCP verso il server sulla mwrqporta 25 (molti Provider per limitare lo spam utilizzano al suo posto la porta TCP 587 come previsto dalla mwrgRFC 2476 del dicembre 1998). Per associare il server SMTP a un dato nome di dominio (mwrwDNS) si usa un Resource Record di tipo mwsaMX (Mail eXchange).
Poiché SMTP è un protocollo testuale basato sulla codifica mwsgASCIIcite-ref-rfc821-2-2[2] (in particolare ASCII NVT 7-bit), non è permesso trasmettere direttamente testo composto con un diverso set di caratteri (quindi nemmeno mwtwfile binari). Lo standard mwuaMIME permette di estendere il formato dei messaggi mantenendo la compatibilità col mwuqsoftware esistente. Per esempio, al giorno d'oggi molti server SMTP supportano l'estensione 8BITMIME, la quale permette un trasferimento di un testo che contiene caratteri accentati (non-ASCII) senza bisogno di trascodificarlo. Altri limiti di SMTP, quale la lunghezza massima di una riga, impediscono la spedizione di mwuwfile binari senza mwvatrascodifica. (Nota che per i file binari inviati con mwvqHTTP si utilizza il formato mwvgMIME senza bisogno di una trascodifica.)
SMTP è un protocollo che permette soltanto di inviare messaggi di posta, ma non di richiederli ad un server: per fare questo il mwwaclient di posta deve usare altri protocolli, quali mwwqPOP3 (Post Office Protocol) e mwwgIMAP (Internet Message Access Protocol).
Storia
Negli anni '60 venivano utilizzate già diverse soluzioni one-to-one per lo scambio di messaggi. Le persone comunicavano tra di loro utilizzando sistemi sviluppati per uno specifico mwxqmainframe. Al crescere dei computer connessi, soprattutto in mwxgARPANET, vennero sviluppati diversi standard per permettere lo scambio di mail tra utenti di sistemi differenti. SMTP nacque da questi standard durante gli anni 70.
Le radici di SMTP possono essere trovate in due implementazioni descritte nel 1971: il protocollo Mail Box, la cui implementazione è stata discussacite-ref-8[8], ma viene trattata in varie RFC tra cui la mwzaRFC 196cite-ref-9[9], ed implementata nel programma SNDMSG che, secondo la mwaqRFC 2235, è stato inventato da mwagRay Tomlinson della mwawBBN per essere utilizzato su computer mwbaTENEX al fine di inviare messaggi su ARPANET.
Ulteriori implementazioni includono FTP Mailcite-ref-10[10] e Mail Protocol, entrambe del 1973cite-ref-11[11]. Il lavoro di sviluppo continuò durante gli anni 70, finché, intorno al 1980, la rete ARPANET si trasformò nella moderna rete internet. mwdgJon Postel propose un Mail Transfer Protocol nel 1980 che iniziò a rimuovere la dipendenza delle mail da FTPcite-ref-12[12]. SMTP venne pubblicato come mwewRFC 788 nel novembre del 1981cite-ref-rfc788-1-1[1].
Agli inizi degli anni '80, SMTP divenne largamente utilizzato. A quell'epoca era un'estensione di mwgqUUCP (abbreviazione di Unix-to-Unix Copy Program, è una suite di programmi e protocolli che permettono l'esecuzione remota di comandi e il trasferimento di file ed email tra computer), che era più adatto a gestire il trasferimento di email tra computer connessi in maniera intermittente. SMTP tuttavia funziona meglio con mittente e destinatario sempre connessi alla rete. Entrambi utilizzano un meccanismo di mwggstore and forward e sono esempi di mwgwlogica push.
mwhqSendmail, rilasciato con mwhg4.1cBSD, subito dopo la mwhwRFC 788, fu uno dei primi mail transfer agent ad implementare SMTPcite-ref-13[13]. Grazie al fatto che BSD mwjaUnix divenne il mwjqsistema operativo più diffuso su internet, sendmail diventò il mwjgmail transfer agent (mail server) più utilizzato. Altri SMTP server sono mwjwPostfix, mwkaqmail, mwkqNovell GroupWise, Exim, Novell NetMail, mwlaMicrosoft Exchange Server e Oracle Communications Messagging Server.
La possibilità di inviare messaggi (mwlwRFC 2476cite-ref-rfc2476-14-0[14]) e SMTP-AUTH (mwnqRFC 2554cite-ref-15[15]) furono sviluppati nel 1998 e 1999, introducendo un nuovo trend nella consegna della email. Inizialmente, i server SMTP erano tipicamente all'interno di una organizzazione, ricevendo mail per l'organizzazione dall'esterno e consegnando messaggi dall'organizzazione per l'esterno. A causa della veloce espansione del mwogWorld Wide Web, i server SMTP hanno dovuto inserire regole specifiche e metodi per consegnare email ed autenticare gli utenti per prevenire abusi come consegna di mail non richieste (mwowspam). Il lavoro sull'invio dei messaggi (mwpaRFC 2476cite-ref-rfc2476-14-1[14]) fu sviluppato perché i più famosi mail server spesso sovrascrivevano la mail per sistemare i problemi contenuti in essa come, per esempio, aggiungendo il nome di dominio ad un indirizzo non specificato. Questo comportamento è desiderato quando il messaggio viene corretto mentre si trova in uno stato iniziale ma pericoloso e dannoso quando il messaggio è stato generato altrove e sta per essere trasmesso. Separare mail tra consegna e trasmissione è visto come un modo per permettere ed incoraggiare il rewriting submission e bloccare il rewriting relay. Questa separazione tra consegna e trasmissione divenne velocemente la base della sicurezza mail.
Essendo nato come puro protocollo mwqgASCII text-based 7-bit, SMTP non gestiva bene i file binari e i caratteri non utilizzati nella mwqwlingua Inglese. Standard come Multipurpose Internet Mail Extension (mwraMIME) furono sviluppati per codificare i file binari per il trasferimento tramite SMTP. I mail transfer agent (MTA) sviluppati dopo mwrqSendmail tendevano ad essere implementati come 8-bit-clean così da poter trasmettere qualsiasi file di testo contenente dati (in una qualsiasi codifica 8-bit ASCII-like) attraverso SMTP. Oggigiorno gli 8-bit-clean MTA tendono a supportare l'estensione 8BITMIME, permettendo la facile trasmissione di file binari, come avviene per file di testo. Recentemente è stata sviluppata l'estensione SMTPUTF8 per permettere il supporto di testo con codifica mwsqUTF-8, garantendo lo scambio di messaggi in lingue come mwsgCirillico e mwswCinese.
Molte persone contribuirono allo sviluppo delle specifiche SMTP, tra i quali mwtqJon Postel, Eric Allman, Dave Crocker, Ned Freed, Randall Gellens, John Klensin e Keith Moore.
Modello di gestione delle mail
Una mail è inviata da un client di posta (mwuwmail user agent, MUA) ad un server mail (mwvamail submisson agent, MSA), usando SMTP attraverso mwvqTCP sulla porta 587. La maggior parte dei provider di posta tuttavia permettono ancora l'invio sulla tradizionale porta 25. L'MSA consegna la mail al mwvgmail transfer agent (MTA). Spesso MSA e MTA sono istanze dello stesso software, avviato con opzioni diverse sulla stessa macchina. Oltre che con un classico client, un account di posta in uscita con protocollo SMTP può essere configurato in qualsiasi applicazione software che possa inviare posta elettronica.
Il MTA utilizza il mwwaDNS per trovare il record MX di uno specifico dominio (la parte dell'indirizzo dopo il carattere @). Il record MX contiene il nome dell'host target. Basandosi sul nome dell'host e su altre informazioni, il MTA sceglie un server e si connette come SMTP client.
Il trasferimento di messaggi può avvenire in una singola connessione tra due MTA o attraverso una serie di salti attraverso diversi sistemi intermediari. Un server SMTP può essere destinatario del messaggio o intermediario (compiendo operazioni di store and forward) o gateway (può trasmettere il messaggio utilizzando anche altri protocolli, oltre a SMTP). Ogni salto è un trasferimento formale di responsabilità sul messaggio, per cui ciascun server che riceve il messaggio deve consegnarlo o segnalare un errore.
Una volta che il server destinatario accetta il messaggio in arrivo, lo consegna ad un mwwwmail delivery agent (MDA), che lo salva in una mailbox per la consegna locale.
Una volta consegnato al mail server, il messaggio è memorizzato per poter esser recuperato da un determinato mail client autenticato (MUAs). La mail è recuperata attraverso applicazioni sul dispositivo dell'utente, chiamate mail client, usando il protocollo mwxqInternet Message Access Protocol (IMAP), che facilita sia l'accesso alle mail sia gestisce le mail immagazzinate, o mwxgPost Office Protocol (POP) che tipicamente usa il tradizionale formato mbox per le mail, o un sistema proprietario come per esempio mwxwMicrosoft Exchange/mwyaOutlook o mwyqLotus Notes/Domino. I client mwygWebmail possono utilizzare entrambi i modi ma il protocollo per il recupero solitamente non è un protocollo standard. mwywPOP3 e mwzaIMAP sono protocolli simili ma con alcune differenze sostanziali:
• mwzwPOP3: il client mail si collega al server, scarica la posta in locale, cancella i messaggi scaricati dal server e si disconnette (è possibile comunque impostare alcuni parametri per evitare la cancellazione della mail dal server). Caratteristiche di questo protocollo: possibilità di avere i messaggi sempre salvati in locale quindi non è necessaria una connessione internet (ovviamente necessaria per invio e scaricamento dei nuovi messaggi) e risparmio di spazio sul server.
• mw0qIMAP: il client mail si collega al server, richiede i nuovi messaggi e li presenta all'utente salvandoli sotto forma di file temporanei (analogamente a POP3, è possibile salvare le mail in locale in maniera permanente). Qualsiasi modifica apportata ai messaggi viene riprodotta anche sul server e su qualsiasi altro dispositivo col quale si è effettuato l'accesso. Caratteristiche: posta salvata sul server quindi sempre reperibile da qualsiasi dispositivo tramite autenticazione, possibilità di recuperare la mail anche se un determinato dispositivo sul quale si consultano le mail smette di funzionare, risparmio spazio sul client.
SMTP definisce come viene trasmesso il messaggio, non il suo contenuto. Definisce la struttura e i suoi parametri, come l'envelope sender, ma non l'header (ad eccezione delle informazioni di tracciamento) o il corpo del messaggio stesso. STD 10 e mw1aRFC 5321cite-ref-rfc5321-4-1[4] definiscono la struttura di SMTP mentre STD 11 e mw2qRFC 5322cite-ref-16[16] definiscono il messaggio (header e body) attraverso un Internet Message Format.
Struttura del Protocollo
SMTP è un protocollo mw4qconnection oriented, text based, nel quale un mail sender comunica con un mail receiver inviando stringhe di comandi e fornendo le informazioni necessarie attraverso un canale di comunicazione affidabile, tipicamente basato su mw4wTCP. Una sessione SMTP consiste nello scambio di comandi generati da un client SMTP e le corrispettive risposte del server SMTP. Una sessione può includere zero o più transazioni SMTP. Una mw5atransazione SMTP consiste in tre sequenze di comandi e risposte:
2. mw8gmw8wRCPT TO: comando per definire il destinatario del messaggio. Questo comando può essere inviato più volte, una per ogni destinatario (gli indirizzi fanno parte della struttura (envelope)).
3. mw9qmw9gDATA: comando inviato per segnalare l'inizio del messaggio di testo, il contenuto del messaggio, come definito nell'envelope. Consiste di un header ed un body, separati da una linea vuota. mw9wDATA tuttavia è un insieme di comandi ai quali il server risponde due volte: la prima volta come conferma di ricezione del testo (acknowledge), la seconda dopo la sequenza di end-of-data per accettare o rifiutare l'intero messaggio.
Oltre alle risposte intermedie al comando mw-qmw-gDATA, ogni risposta del server può essere positiva (caratterizzata dal codice 2xx) o negativa. Le risposte negative possono essere permanenti (5xx) o temporanee (4xx). Un rifiuto (mw-wreject) rappresenta un fallimento permanente e il client dovrebbe inviare un bounce message al server dal quale ha ricevuto il messaggio. Un mw-adrop è una risposta positiva, seguita dal messaggio di rifiuto, invece che dal messaggio di avvenuta consegna.
L'host iniziale, il client SMTP, può essere sia un mw-gclient mail dell'utente, indicato con mw-wmail user agent (MUA) o fare affidamento su un mwaqamail transfer agent (MTA), che di fatto è un server SMTP che si comporta come un client SMTP per la sessione corrente. I server SMTP più avanzati mantengono una coda di messaggi per inviare nuovamente i messaggi che hanno riportato un esito negativo (temporaneo) di consegna.
Un server di trasmissione tipicamente determina quale è il server a cui si deve connettere attraverso il record MX (Mail eXchange) del mwaqiDNS di ciascun dominio. Se non esiste nessun record MX, alcuni server controllano il record A. La differenza principale tra MTA e MSA consiste nel fatto che la connessione ad un MSA richiede un'autenticazione SMTP. La suddivisione tra MTA e MSA comporta diversi benefici:
• Il MSA, poiché interagisce direttamente con l'utente (attraverso il MUA), può correggere piccoli errori nel formato del messaggio (per esempio, data mancante, destinatario mancante, nome di dominio inesistente ecc). Un MTA che accetta un messaggio non può effettuare in maniera affidabile e sicura queste modifiche a qualsiasi modifica fatta dal MTA raggiunge il mittente del messaggio, dopo che il messaggio è già stato inviato.
• MSA e MTA possono avere diverse soluzioni per il blocco dello spam. La maggior parte dei MSA richiedono un'autenticazione tramite mail e mwaqcpassword e quindi il mittente del messaggio può essere rintracciato. Questo permette al MSA di avere una politica meno stringente sullo spam. Vedi anche: message submission agent.
Recupero Messaggi
SMTP è solamente un protocollo di consegna. Nell'utilizzo più comune, il messaggio è inviato al server mail di destinazione, o al server che si trova al passo successivo. Il messaggio è instradato sulla base del server di destinazione, non sulla base dell'utente al quale deve essere inviato. Altri protocolli come mwaqsPost Office Protocol (POP) e mwaqwInternet Message Access Protocol (IMAP) sono specificamente sviluppati per essere utilizzati dall'utente, recuperando i messaggi e gestendo la casella di posta. Per permettere ad un server mail connesso ad intermittenza di recuperare i messaggi da un server remoto, SMTP ha una funzione per inizializzare una coda di processamento messaggi su un server remoto (vedi sotto).
Inizializzazione Coda di Messaggi Remota
L'Inizializzazione di una coda di messaggi remota è una caratteristica di SMTP che permette ad un mwaq8host remoto di iniziare il processamento della coda delle mail su un server, il quale può ricevere messaggi destinati ad esso inviando in comando mwaramwareTURN. Questa caratteristica tuttavia è stata giudicata insicuracite-ref-rfc1985-18-0[18] e fu sostituita (mwaryRFC 1985cite-ref-rfc1985-18-1[18]) dal comando mwarsmwarwETRN che opera in maniera più sicura utilizzando un metodo di autenticazione basato su Domain Name System Information.
Internazionalizzazione
Utenti per i quali la lingua scritta non è basata sull'alfabeto mwar8Latino o che usano simboli non contenuti nel set di caratteri mwasaASCII, possono aver problemi causati dal fatto che l'indirizzo mail richiede solamente caratteri Latin. mwaseRFC 6531cite-ref-19[19] nacque per risolvere questo problema, introducendo l'estensione SMTPUTF8 e il supporto per una codifica multi byte per caratteri non ASCII per gli indirizzi mail, per supportare lingue come il greco e cinese.
SMTP Server
Un mwasgclient di posta elettronica necessita di conoscere l'mwaskindirizzo IP del server SMTP di partenza, che deve essere fornito come parte della sua configurazione (solitamente come nome mwasoDNS, campo MX).
Restrizioni di Accesso
Gli amministratori dei server necessitano di imporre un qualche tipo di controllo riguardo quali client possono utilizzare il server, per permettere la gestione, per esempio, dello spam. Esistono due soluzioni utilizzate solitamente:
• In passato, molti sistemi imponevano restrizioni d'uso in base alla posizione geografica del client, permettendo solamente l'uso di client i quali indirizzi IP sono tra quelli gestiti dall'amministratore del server. L'utilizzo da parte di altri indirizzi IP non era permesso.
• I moderni server SMTP offrono tipicamente un sistema alternativo che richiede l'mwataautenticazione del client attraverso delle credenziali, prima di permettere l'accesso.
Restrizioni di Accesso Basate sulla Posizione
Al di sotto di questi sistemi, un mwatmISP non permette accesso al server SMTP da parte di utenti al di fuori della rete gestita dall'mwatqISP stesso. Più precisamente, il server potrebbe consentire solamente l'accesso di utenti con un indirizzo IP fornito dall'mwatuISP, che è equivalente a richiedere che entrambi, mittente e destinatario, siano connessi ad internet usando lo stesso mwatyISP. Un utente mobile, tuttavia, potrebbe spesso trovarsi su una rete che non è quella del suo normale ISP e quindi potrebbe non riuscire ad inviare mail perché la configurazione del server SMTP scelto non è più accessibile.
Un server SMTP di una organizzazione potrebbe quindi fornire solamente servizi ad utenti sulla stessa rete, bloccando l'accesso alla rete esterna. Alternativamente il server potrebbe effettuare un range check sull'indirizzo IP del client. Questi metodi vennero tipicamente utilizzati da enti e istituzioni come università che forniscono un server SMTP solamente per un uso interno all'organizzazione. Tuttavia molte di queste organizzazioni ora utilizzano un metodo di autenticazione.
Quando un utente è mobile, e potrebbe connettersi ad internet attraverso diversi ISP, questo tipo di restrizione di utilizzo è onerosa e la modifica dell'indirizzo del server di uscita è impraticabile. È desiderabile aver la possibilità di utilizzare configurazioni mail client che non hanno bisogno di essere cambiate.
Client autentication
I moderni server SMTP solitamente richiedono l'autenticazione dei client attraverso credenziali, prima di permetterne l'accesso, invece di bloccare direttamente l'accesso in base alla posizione, come descritto prima. Questo sistema più flessibile permette agli utenti mobili di avere un server SMTP di outboud fisso. L'autenticazione SMTP, spesso abbreviata con SMTP AUTH, è un'estensione di SMTP per permettere l'accesso attraverso meccanismi di autenticazione.
Open Relay
Un server accessibile su tutta la rete internet e che non adotta questi tipi di restrizioni per l'accesso è definito open relay. L'adozione di un sistema di questo tipo è considerato cattiva praticacite-ref-20[20].
Porte
La comunicazione tra mail server solitamente avviene attraverso mwauuTCP sulla porta 25, anche se i mwauyclient di posta elettronica solitamente utilizzano un'altra porta. I servizi mail accettano di solito l'invio delle mail sulle porte:
• 465 (consegna sicura). Originariamente assegnata al servizio secure SMTP nel 1990, poi deprecata dalla mwavuRFC 2487cite-ref-22[22], e infine reintrodotta dalla mwavoRFC 8314 nel 2018.
La porta 2525 e altre possono essere utilizzate da alcuni provider ma non sono ufficialmente supportate.
Molti mwav0Internet Service Provider ora bloccano tutte le mail inviate dalla porta 25, come misura anti spamcite-ref-23[23] e consentono l'invio solamente dal server mail designato. Il provider così può controllare il traffico in uscita.
Comandi SMTP
mwawqHELO: Inviato da un client per l'autoidentificazione, solitamente con un nome di dominio.
mwawyEHLO: Consente al server di identificare il supporto per i comandi mwawcESMTP (Extended Simple Mail Transfer Protocol).
mwawkMAIL FROM: Identifica il mittente del messaggio. Utilizzato nella forma mwawoMAIL FROM:.
mwawwRCPT TO: Identifica i destinatari del messaggio. Utilizzato nella forma mwaw0RCPT TO:.
mwaw8TURN: Consente al client e al server di invertire i ruoli e inviare la posta nella direzione opposta senza dovere stabilire una nuova connessione.
mwaxeATRN: Il comando mwaxiATRN (Authenticated mwaxmTURN) utilizza, a propria discrezione, uno o più domini come parametro. Il comando mwaxqATRN deve essere rifiutato se la sessione non è stata autenticata.
mwaxySIZE: Fornisce un meccanismo per mezzo del quale il server SMTP può indicare la dimensione massima supportata per i messaggi. I server compatibili devono fornire delle estensioni della dimensione per indicare la massima dimensione consentita per i messaggi. I client non devono inviare messaggi di dimensione superiore a quella indicata dal server.
mwaxgETRN: Un'estensione di SMTP. mwaxkETRN viene inviato da un server SMTP per richiedere che un altro server invii gli eventuali messaggi di posta elettronica di cui dispone.
mwaxsPIPELINING: Consente di inviare un flusso di comandi senza aspettare una risposta dopo ogni comando.
mwax0CHUNKING: È un comando ESMTP che sostituisce il comando mwax4DATA. Questo comando invia un comando mwax8BDAT con un argomento contenente il numero di byte totale del messaggio in modo che l'host SMTP non debba continuamente eseguire la scansione per determinare la fine dei dati. Il server destinatario conta i byte nel messaggio e, quando la dimensione del messaggio corrisponde al valore inviato dal comando mwayaBDAT, il server presuppone di avere ricevuto tutti i dati del messaggio.
mwayiDATA: Inviato da un client per avviare il trasferimento del contenuto di un messaggio.
mwayqDSN: È un comando ESMTP che attiva le notifiche dello stato del recapito.
mwayyRSET: Annulla l'intera transazione del messaggio e ripristina il buffer.
mwaygVRFY: Verifica che una cassetta postale sia disponibile per il recapito di messaggi. Ad esempio, mwaykVRFY ted verifica che sul server locale risieda la cassetta postale di Ted.
mwaysHELP: Restituisce l'elenco dei comandi supportati dal servizio SMTP.
mway0QUIT: Termina la sessione.
Esempio di comunicazione SMTP
Di seguito viene riportata una transazione SMTP tra due caselle di posta (mwazaAlice e mwazeBob) che si trovano sullo stesso dominio (mwaziexample.com). Le righe inviate dal client sono precedute da "C:", mentre quelle inviate dal server da "S:" (queste lettere tuttavia non fanno parte dello scambio di messaggi ma servono solamente da esempio).
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.com
S: 250 smtp.example.com
C: MAIL FROM: <bob@example.com>
S: 250 OK
C: RCPT TO: <alice@example.com>
S: 250 OK
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob" <bob@example.com>
C: To: "Alice" <alice@example.com>
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Messaggio di prova
C:
C: Ciao, questo è un messaggio di prova
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
Il client notifica il destinatario della mail attraverso il comando mwazuRCPT TO. Nel caso in cui il messaggio non possa essere consegnato, viene restituito un bounce address. In questo caso il messaggio viene inviato ad una casella di posta sullo stesso server (nel caso in cui fosse stato presente anche un Cc, il messaggio sarebbe stato inviato anche alla sua casella). Il comando SMTP corrispondente è mwazyRCPT TO. Ogni comando eseguito con successo porta alla generazione di un acknowledge da parte del server con codice 250.
L'inizio della trasmissione del testo della mail è identificata dal comando mwazgDATA, dopo il quale il testo è trasmesso linea per linea e termina con la sequenza mwazk<CR><LF>.<CR><LF>detta sequenza di mwazoend-of-data. Poiché una linea può contenere solamente un punto (.) come parte del testo, il client manda mwazsdue punti consecutivi ogni volta che una linea inizia con un punto. Analogamente il server sostituisce ogni sequenza di due punti consecutivi con uno solo (questa tecnica è chiamata mwazwdot-stuffing).
La risposta positiva del server allmwaz4'mwaz8end-of-data significa che il server si è preso in carico la consegna del messaggio. Un messaggio può essere duplicato se, in questa fase, avviene un problema di comunicazione, causato per esempio da un calo di corrente. Finché il mittente non riceve il messaggio con codice mwaaa250, si suppone che il messaggio non sia stato consegnato. Analogamente dopo che il destinatario ha deciso di accettare il messaggio, il mittente assume che il messaggio sia stato consegnato. Tuttavia, durante questo arco di tempo (tempo che intercorre tra quando il messaggio è stato inviato a quando il client riceve la risposta caratterizzata dal codice 250), entrambi gli agent hanno copie attive di messaggi che tentano di consegnarecite-ref-24[24] e questo può causare problemi di messaggi duplicati. Per limitare questo fenomeno solitamente si specifica un tempo di timeout compreso tra 5 e 10 minuticite-ref-25[25].
Il comando mwaaoQUIT termina la sessione. Se la mail ha altri destinatari, il client si connetterà ad un opportuno server SMTP per i successivi destinatari. Le informazioni che il client invia coi comandi mwaasHELO e mwaawMAIL FROM, sono inserite (non mostrate nel codice di esempio) nella mail come campi mwaa0header aggiuntivi, dal server destinatario, aggiungendo rispettivamente i campi mwaa4Received e mwaa8Return-Path.
Alcuni client sono implementati in modo da chiudere la connessione dopo che il messaggio è stato accettato (nell'esempio mwabe250 OK: queued as 12345), quindi le ultime due linee possono essere omesse. Questa soluzione tuttavia può causare un errore nel server durante l'invio della risposta mwabi221.
Estensioni
Il client può scoprire quali opzioni supporta un server attraverso il messaggio mwabuEHLO, come mostrato in seguito, invece di inviare il tradizionale mwabyHELO. Il client ritorna ad un messaggio di mwabcHELO solo se il server non supporta le estensioni di SMTP.cite-ref-rfc1869-3-1[3]
I moderni client possono usare la keyword mwab0SIZE, introdotta dall'estensione mwab4ESMTP, per chiedere al server la dimensione massima del messaggio che viene accettato. In passato, c'era il rischio che client e server tentassero di trasferire messaggi troppo grandi, che sarebbero stati bloccati dopo aver utilizzato le risorse della rete tra cui il tempo di connessionecite-ref-26[26].
Gli utenti possono determinare manualmente, in anticipo, la dimensione massima accettata dal server ESMTP, sostituendo il comando mwacqHELO con mwacuEHLO, come di seguito
S: 220 smtp2.example.com ESMTP Postfix
C: EHLO bob.example.com
S: 250-smtp2.example.com Hello bob.example.org [192.0.2.201]
S: 250-SIZE 14680064
S: 250-PIPELINING
S: 250 HELP
Dalla risposta si evince che mwacgsmtp2.example.com dichiara di accettare un messaggio massimo di dimensione fissata non maggiore di 14.680.064 ottetti (8-bit, byte). Tuttavia la dimensione massima del messaggio può variare a seconda dell'utilizzo corrente delle risorse del server (potrebbe non essere in grado di ricevere un messaggio così grande).
Nel caso più semplice, un server mwacoESMTP dichiara una dimensione massima subito dopo la ricezione del comando di mwacsEHLO, anche se, secondo la mwacwRFC 1870cite-ref-27[27], il parametro mwadeSIZE nella risposta mwadiEHLO è opzionale. Il client potrebbe invece, quando invia un comando mwadmMAIL FROM, includere la dimensione stimata del messaggio che sta per inviare, così il server potrebbe rifiutare la ricezione di messaggi troppo grandi.
La sicurezza del protocollo SMTP
Una delle limitazioni del protocollo SMTP originario è che non gestisce l'mwadyautenticazione dei mittenti. Oltre al rischio di mwadcspam, esiste la possibilità di inviare e-mail facendo apparire come mittente l'indirizzo corrispondente ad un altro account. Senza accedere all'account di terzi, è possibile stabilire una connessione al mail-server e scrivere un messaggio in codice SMTP contenente i comandi relativi a mittente e destinatario, dare i relativi parametri e il corpo della e-mail.
Per ovviare a questi problemi è stata sviluppata un'estensione chiamata SMTP-AUTH.
Nonostante questo, lo mwadsspam rimane ancor oggi un grave problema della posta elettronica. Tuttavia, non si ritiene praticabile una revisione radicale del protocollo SMTP, per via del gran numero di implementazioni del protocollo attuale (ad esempio, è stato proposto Internet Mail 2000 come protocollo alternativo).
Per questo motivo sono stati proposti diversi protocolli ausiliari per assistere le transazioni SMTP. L'Anti-Spam Research Group dell'mwad8IETF sta lavorando su varie proposte di autenticazione e-mail centrate sulla flessibilità, leggerezza e mwaeascalabilità.
Gli standard RFC relativi
Pubblicato nel 2008, il mwaemRFC 5321 - "The Simple Mail Transfer Protocol" è il documento di specifica principale per quanto riguarda il protocollo SMTP e rende obsoleti il mwaeqRFC 821 (conosciuto anche come STD 10), mwaeuRFC 974, mwaeyRFC 1869 e mwaecRFC 2821. Inoltre, i seguenti RFC estendono le funzionalità del protocollo SMTP: (in lingua originale)
• mwaeoRFC 1123 - Requirements for Internet Hosts—Application and Support (STD 3)
• mwaewRFC 1870 - SMTP Service Extension for Message Size Declaration (rende obsoleto mwae0RFC 1653)
• mwae8RFC 2505 - Anti-Spam Recommendations for SMTP MTAs (BCP 30)
• mwafeRFC 2920 - SMTP Service Extension for Command Pipelining (STD 60)
• mwafmRFC 3030 - SMTP Service Extensions for Transmission of Large and Binary MIME Messages
• mwafuRFC 3207 - SMTP Service Extension for Secure SMTP over Transport Layer Security (rende obsoleto mwafyRFC 2487)
• mwafgRFC 3461 - SMTP Service Extension for mwafkDelivery Status Notifications (rende obsoleto mwafoRFC 1891)
• mwafwRFC 3463 - Enhanced Status Codes for SMTP (rende obsoleto mwaf0RFC 1893)
• mwaf8RFC 3464 - An Extensible Message Format for Delivery Status Notifications (rende obsoleto mwagaRFC 1894)
• mwagiRFC 3798 - Message Disposition Notification
• mwagqRFC 3834 - Recommendations for Automatic Responses to Electronic Mail
• mwagyRFC 4952 - Overview and mwagcFramework for Internationalized E-mail
• mwagkRFC 4954 - SMTP Service Extension for Authentication (rende obsoleti mwagoRFC 2554)
• mwagwRFC 5068 - E-mail Submission Operations: Access and Accountability Requirements (BCP 134)
• mwag4RFC 5322 - Internet Message Format (rende obsoleto mwag8RFC 822 aka STD 11, and mwahaRFC 2822)
• mwahiRFC 5336 - SMTP Extension for Internationalized Email Addresses (aggiorna mwahmRFC 2821, mwahqRFC 2822, and mwahuRFC 4952)
• mwahcRFC 5504 - Downgrading Mechanism for Email Address Internationalization
• mwahkRFC 6409 - Message Submission for Mail (rende obsoleti mwahoRFC 4409, mwahsRFC 2476)
• mwah0RFC 6522 - The Multipart/Report Content Type for the Reporting of Mail System Administrative Messages (rende obsoleti mwah4RFC 3462, mwah8RFC 1892)
• mwaieRFC 8314 - Cleartext Considered Obsolete: Use of Transport Layer Security (TLS) for Email Submission and Access
(tradotti in italiano)
• mwaiuRFC 1869 - Estensioni del servizio SMTP (tradotta), su rfc.altervista.org.
Note
cite-note-rfc788-11. ↑ mwai4(mwai8mwajaEN) mwajemwajiRFC 788 — Simple Mail Transfer Protocol, su mwajmdatatracker.ietf.org, mwajqInternet Engineering Task Force.mwaju
cite-note-rfc821-22. ↑ mwaj0(mwaj4mwaj8EN) mwakamwakeRFC 821 — Simple Mail Transfer Protocol, su mwakidatatracker.ietf.org, mwakmInternet Engineering Task Force.mwakq
cite-note-rfc1869-33. ↑ mwako(mwaksmwakwEN) mwak0mwak4RFC 1869 — SMTP Service Extensions, su mwak8datatracker.ietf.org, mwalaInternet Engineering Task Force.mwale
cite-note-rfc5321-44. ↑ mwalk(mwalomwalsEN) mwalwmwal0RFC 5321 — Simple Mail Transfer Protocol, su mwal4datatracker.ietf.org, mwal8Internet Engineering Task Force.mwama
cite-note-55. ↑ mwamqmwamumwamyService Name and Transport Protocol Port Number Registry, su mwamcwww.iana.org. mwamgURL consultato il 16 giugno 2022.
cite-note-66. ↑ mwamw(mwam0mwam4EN) mwam8mwanaRFC 4409 — Message Submission for Mail, su mwanedatatracker.ietf.org, mwaniInternet Engineering Task Force.mwanm
cite-note-77. ↑ mwancmwangmwankTest comunicazione SMTP con telnet, su mwanoport25.com. mwansURL consultato il 4 gennaio 2018 mwanw(archiviato dall'mwan0url originale il 5 aprile 2017).
cite-note-88. ↑ mwaoe(mwaoimwaomEN) mwaoqmwaouThe History of Electronic Mail, su mwaoymulticians.org. mwaocURL consultato il 6 dicembre 2017.
cite-note-99. ↑ mwaos(mwaowmwao0EN) mwao4mwao8RFC 196 — Mail Box Protocol, su mwapadatatracker.ietf.org, mwapeInternet Engineering Task Force.mwapi
cite-note-1010. ↑ mwapy(mwapcmwapgEN) mwapkmwapoRFC 469 — Network mail meeting summary, su mwapsdatatracker.ietf.org, mwapwInternet Engineering Task Force.mwap0
cite-note-1111. ↑ mwaqe(mwaqimwaqmEN) mwaqqmwaquRFC 524 — Proposed Mail Protocol, su mwaqydatatracker.ietf.org, mwaqcInternet Engineering Task Force.mwaqg
cite-note-1212. ↑ mwaqw(mwaq0mwaq4EN) mwaq8mwaraRFC 772 — Mail Transfer Protocol, su mwaredatatracker.ietf.org, mwariInternet Engineering Task Force.mwarm
cite-note-1313. ↑ mwarcmwargdocs.freebsd.org, mwarkhttps://docs.freebsd.org/44doc/smm/09.sendmail/paper.pdfmwaro Titolo mancante per url mwarsurl (aiuto).
cite-note-rfc2476-1414. ↑ mwasu(mwasymwascEN) mwasgmwaskRFC 2476 — Message Submission, su mwasodatatracker.ietf.org, mwassInternet Engineering Task Force.mwasw
cite-note-1515. ↑ mwata(mwatemwatiEN) mwatmmwatqRFC 2554 — SMTP Service Extension for Authentication, su mwatudatatracker.ietf.org, mwatyInternet Engineering Task Force.mwatc
cite-note-1616. ↑ mwats(mwatwmwat0EN) mwat4mwat8RFC 5322 — Internet Message Format, su mwauadatatracker.ietf.org, mwaueInternet Engineering Task Force.mwaui
cite-note-1717. ↑ mwauymwaucmwaugThe MAIL, RCPT, and DATA verbs, su mwaukcr.yp.to.
cite-note-rfc1985-1818. ↑ mwau8(mwavamwaveEN) mwavimwavmRFC 1985 — SMTP Service Extension for Remote Message Queue Starting, su mwavqdatatracker.ietf.org, mwavuInternet Engineering Task Force.mwavy
cite-note-1919. ↑ mwavo(mwavsmwavwEN) mwav0mwav4RFC 6531 — SMTP Extension for Internationalized Email, su mwav8datatracker.ietf.org, mwawaInternet Engineering Task Force.mwawe
cite-note-2020. ↑ mwawumwawymwawcIn Unix, what is an open mail relay? - Knowledge Base, su mwawgkb.iu.edu, 17 giugno 2007. mwawkURL consultato il 14 dicembre 2017 mwawo(archiviato dall'mwawsurl originale il 17 giugno 2007).
cite-note-2121. ↑ mwaw8(mwaxamwaxeEN) mwaximwaxmRFC 6409 — Message Submission for Mail, su mwaxqdatatracker.ietf.org, mwaxuInternet Engineering Task Force.mwaxy
cite-note-2222. ↑ mwaxo(mwaxsmwaxwEN) mwax0mwax4RFC 2487 — SMTP Service Extension for Secure SMTP over TLS, su mwax8datatracker.ietf.org, mwayaInternet Engineering Task Force.mwaye
cite-note-2323. ↑ mwayu(mwayymwaycEN) mwaygmwaykISPs Pitch In to Stop Spam, su mwayoPCWorld. mwaysURL consultato il 14 dicembre 2017 mwayw(archiviato dall'mway0url originale il 19 agosto 2016).
cite-note-2424. ↑ mwaze(mwazimwazmEN) mwazqmwazuRFC 1047 — duplicate messages and SMTP, su mwazydatatracker.ietf.org, mwazcInternet Engineering Task Force.mwazg
cite-note-2525. ↑ mwazwmwaz0mwaz4RFC 5321 sezione 4.5.3.2.6, su mwaz8tools.ietf.org.
cite-note-2626. ↑ mwa0mmwa0qmwa0uParametri Mail (mwa0ymwa0cTXT), su mwa0giana.org.
cite-note-2727. ↑ mwa0w(mwa00mwa04EN) mwa08mwa1aRFC 1870 — SMTP Service Extension for Message Size Declaration, su mwa1edatatracker.ietf.org, mwa1iInternet Engineering Task Force.mwa1m
Voci correlate
• mwa1cOn-Demand Mail Relay
• mwa1kMultipurpose Internet Mail Extensions (MIME)
• mwa1sMail server
• mwa10SMTPS
Altri progetti
Altri progetti
• Wikimedia Commons
• Wikimedia Commons contiene immagini o altri file sul Simple Mail Transfer Protocol
Collegamenti esterni
• citereflessico-del-xxi-secoloSMTP, in Lessico del XXI secolo, Istituto dell'Enciclopedia Italiana, 2013.
• citereffoldoc(EN) Denis Howe, Simple Mail Transfer Protocol, in Free On-line Dictionary of Computing. Disponibile con licenza mwa2qGFDL
• citerefgarzanti-smtpSMTP, in Grande Dizionario di Italiano, Garzanti Linguistica.
• mwa2c(EN) What is the Simple Mail Transfer Protocol (SMTP)?, su Cloudflare. URL consultato il 7 febbraio 2024.